package com.javaweb.secondhand_trading.mapper;

import com.javaweb.secondhand_trading.entity.User;
import org.apache.ibatis.annotations.*;

/**
 * 用户数据访问接口
 * 使用MyBatis注解方式实现用户相关的数据库操作
 */
@Mapper // 标识这是一个MyBatis的Mapper接口
public interface UserMapper {

    /**
     * 插入新用户记录
     * @param user 用户实体对象，包含username和password
     * @return 受影响的行数
     */
    @Insert("INSERT INTO users(username, password) VALUES(#{username}, #{password})")
    @Options(useGeneratedKeys = true, keyProperty = "userId") // 获取自增主键并赋值给userId属性
    int insert(User user);

    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return 用户实体对象
     */
    @Select("SELECT * FROM users WHERE username = #{username}")
    User findByUsername(String username);

    /**
     * 根据用户ID查询用户
     * @param userId 用户ID
     * @return 用户实体对象
     */
    @Select("SELECT * FROM users WHERE user_id = #{userId}")
    User findById(Integer userId);

    /**
     * 删除用户记录
     * @param userId 要删除的用户ID
     * @return 受影响的行数
     */
    @Delete("DELETE FROM users WHERE user_id = #{userId}")
    int delete(Integer userId);

    /**
     * 更新用户信息
     * @param user 用户实体对象，包含userId、username和password
     * @return 受影响的行数
     */
    @Update("UPDATE users set username = #{username}, password = #{password} where user_id = #{userId}")
    int update(User user);
}